// 132 加油站/滑动窗口
// oj.rnd.huawei.com/problems/132/details
// 滑动窗口，
// 开车去距离L单位旅行。家里出发有P单位汽油。
// 行驶1单位路消耗1单位汽油 ，共有N个加油站，
// 加油站i距离终点Ai单位，最多加油Bi。
// 油箱容量无限。
// 能否到达目的，最少加几次油。否则-1

// N      站n个
// Ai Bi
// Ai Bi
// L P    距离L，开始有P油量

// 4
// 4 4
// 5 2
// 11 5
// 15 10
// 25 10
//===2

// 已有油量<剩余里程，要加油。
// 选择现有油量能到达的路程。
// 加油次数最少，选择油量最多的加油站。
//

#include <bits/stdc++.h>
using namespace std;

int getMinStation(int dist, int initOil, vector<pair<int,int>> vtStat) {
    priority_queue<int> quStation;
    int location = 0;
    quStation.push(initOil);
    int idx = vtStat.size();
    int cnt = 0;
    while (location < dist) {
        if(quStation.empty()) {
            return -1;
        }
        location += quStation.top(); quStation.pop();
        cnt++;
        for(; idx>=0 && dist-vtStat[idx].first<=location; idx--) {
            quStation.push(vtStat[idx].second);
        }
    }
    return cnt-1;
}

int main_sfe() {

    int n = 0;
    int l = 0;
    int p = 0;
    while (cin>> n) {
        int dist = 0, oil = 0;
        vector<pair<int,int>> vtStation;
        while(n--) {
            cin >> dist >> oil;
            vtStation.push_back({dist, oil});
        }
        cin >> dist >> oil;
        getMinStation(dist, oil, vtStation);
    }
    return 0;
}
